import tseslint from '@electron-toolkit/eslint-config-ts'
import eslintConfigPrettier from '@electron-toolkit/eslint-config-prettier'
import eslintPluginVue from 'eslint-plugin-vue'
import vueParser from 'vue-eslint-parser'
import tsParser from '@typescript-eslint/parser'

export default tseslint.config(
  { ignores: ['**/node_modules', '**/dist', '**/out'] },
  tseslint.configs.recommended,
  eslintPluginVue.configs['flat/recommended'],
  {
    files: ['**/*.vue'],
    languageOptions: {
      parser: [tsParser, vueParser],
      parserOptions: {
        ecmaFeatures: {
          jsx: true,
        },
        extraFileExtensions: ['.vue'],
        parser: tseslint.parser,
      },
    },
  },
  {
    files: ['**/*.{ts,mts,tsx,vue}'],
    rules: {
      'vue/require-default-prop': 'off',
      'vue/multi-word-component-names': 'off',
      'vue/block-lang': [
        'error',
        {
          script: {
            lang: 'ts',
          },
        },
      ],
      quotes: 0, //使用单引号
      semi: 0, //语句末尾不加分号
      eqeqeq: 'error', //要求使用全等
      'no-console': 1, //禁止使用console
      'no-var': 'error', //不允许使用 var 关键字
      'comma-dangle': ['error', 'always-multiline'], //要求或禁止使用拖尾逗号
      'prefer-const': 'error', //要求使用 const 声明那些声明后不再被修改的变量
    },
  },
  eslintConfigPrettier,
)
